package com.cj.dao;

import com.cj.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;

/**
 * @author cc
 * @date 2025-05-19 08:14
 **/

public class UserDao {

    private SqlSession sqlSession;

    public UserDao() throws IOException {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-conf.xml"));
        sqlSession = sqlSessionFactory.openSession();
    }

    /**
     * 高度模板化，， sqlsession是现成的，，， 类的全路径+方法名 ===》 定位到方法
     */

    /**
     * xml中的namespace就是当前类名，，， xml中的id就是当前方法名
     * @param user
     * @return
     */
    public int addUser(User user){
        int row = sqlSession.insert("com.cj.dao.UserDao.addUser", user);
        System.out.println("row = " + row);
        sqlSession.commit();
        return row;
    }


    // 自己写的时候只写个接口，，，是因为 通过 类全名+方法名字，，找到xml中的 指定方法，，，这个方法读取出来之后，就知道他是select，还是update，还是其他，，
    // 然后根据这个方法，去执行对应的sql语句

}
